package com.github.sdbg.debug.ui.internal.util;
import com.github.sdbg.debug.core.util.IDeviceChooser;
import com.github.sdbg.debug.core.util.IDeviceInfo;
import java.util.List;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.ListDialog;
public class UIDeviceChooser implements IDeviceChooser {
private static class DeviceLabelProvider extends LabelProvider {
@Override
public Image getImage(Object element) {
return null;
}
@Override
public String getText(Object element) {
if (element instanceof IDeviceInfo) {
IDeviceInfo device = (IDeviceInfo) element;
return device.getName() + " (" + device.getId().toUpperCase() + ")";
} else {
return null;
}
}
}
public UIDeviceChooser() {
}
@Override
public IDeviceInfo chooseDevice(final List<? extends IDeviceInfo> devices) {
final IDeviceInfo[] result = new IDeviceInfo[1];
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
ListDialog dlg = new ListDialog(
PlatformUI.getWorkbench().getWorkbenchWindows()[0].getShell());
dlg.setInput(devices);
dlg.setTitle("Connect to a device");
dlg.setMessage("Select a device for remote connection");
dlg.setContentProvider(new ArrayContentProvider());
dlg.setLabelProvider(new DeviceLabelProvider());
if (dlg.open() == Window.OK) {
result[0] = (IDeviceInfo) dlg.getResult()[0];
}
}
});
if (result[0] != null) {
return result[0];
} else {
return null;
}
}
}